package ahu.zdw.com.node;

import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;

/**
 * Author: Zhang Dongwei
 * Date: 2021/12/26 21:52
 */
public class MyLinkedList implements Iterable {
//    上面的三个方法是实现Iterable的重写方法
    // 匿名内部类
    @Override
    public Iterator iterator() {
        return new Iterator() {
            Node node = first;// 外部类中的私有成员
            @Override
            public boolean hasNext() {
                return node != null;
            }

            @Override
            public Object next() {
                int value = node.data;
                node = node.next;
                return value;
            }
        };
    }

    @Override
    public void forEach(Consumer action) {

    }

    @Override
    public Spliterator spliterator() {
        return null;
    }

    // 静态内部类
    private static class Node {
        public int data;
        public Node next = null;
        //        默认构造
        public Node(){
        }
        public Node(int value){
            this.data = value;
        }
    }

    private Node first = null;
    private Node current = null;
    //        在MyLinkedList对象中添加元素
    public void add(int value){
//            产生一个新的节点
        Node newNode = new Node(value);
//            如果没有任何节点存在（第一个节点）
        if(first == null) {
            first = newNode;
            current = newNode;
        }else {
//            如果不是第一个节点
            current.next = newNode;
            current = newNode;
//                System.out.println("current"+current.data);
        }

    }
    //        在控制台显示数据
    public void display() {
        Node node = first;
        while (node != null) {
            int value = node.data;
            System.out.println(value);
            node = node.next;
        }
    }


}

